/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BL;

import BE.SeccionPt;
import DAO.SeccionPtDao;
import java.util.List;

/**
 *
 * @author CarLita
 */
public class SeccionPtBl {

    SeccionPtDao seccionDao;

    public SeccionPtBl(){
        seccionDao = new SeccionPtDao();
    }

    public boolean eliminarPorId(int idSeccion) {
        return seccionDao.eliminarPorId(idSeccion);
    }

    public SeccionPt buscarPorId(int idSeccion){
        return seccionDao.buscarPorId(idSeccion);
    }

    public int guardar(SeccionPt s) {
        return seccionDao.guardar(s);
    }

    public Object[] buscarPorIdPapelTrabajo(int idPapel){
        List l = seccionDao.buscarPorIdPapelTrabajo(idPapel);
        return ordenarListaSecciones(l);
    }

    public List buscarNivelesPorPapelTrabajo(int idPapelTrabajo, int nivel, int idseccionPt) {
        return seccionDao.buscarNivelesPorPapelTrabajo(idPapelTrabajo, nivel, idseccionPt);
    }

    public int grabar(SeccionPt s) {
        return seccionDao.guardar(s);
    }

    private Object[] ordenarListaSecciones(List l) {
                int nElementos = l.size();
        Object[] lista = l.toArray();
        
        //ordenamiento por insercion lineal
        int i = 1;
        int j;
        SeccionPt sAux = null;        
        while (i< nElementos){
            sAux = (SeccionPt)lista[i];
            j =i;
            while (j>0 && comparar(sAux, (SeccionPt)lista[j-1])){
                lista[j]= lista[j-1];
                j--;
            }            
            lista[j] = sAux;
            i++;
        }
        
        return lista;
    }

    private boolean comparar(SeccionPt sAux, SeccionPt seccionPt) {
        int nSAux = sAux.getCorrelativo();
        nSAux = sAux.getCorrelativoSuperior1()>0?sAux.getCorrelativoSuperior1()*10 + nSAux: nSAux*10;
        nSAux = sAux.getCorrelativoSuperior2()>0?sAux.getCorrelativoSuperior2()*100 + nSAux: nSAux*10;
        
        int nSeccion = seccionPt.getCorrelativo();
        nSeccion = seccionPt.getCorrelativoSuperior1()>0?seccionPt.getCorrelativoSuperior1()*10 + nSeccion: nSeccion*10;
        nSeccion = seccionPt.getCorrelativoSuperior2()>0?seccionPt.getCorrelativoSuperior2()*100 + nSeccion: nSeccion*10;
        
        System.out.println("Indices: "+nSAux +" y "+ nSeccion);
        return nSAux<nSeccion;
    }

}
